Matching tasks often involve a large number of individual comparisons between pairs of data records. For instance, in order to find a match between a target data record, such as a fingerprint obtained at a crime scene, and source data records, such as a fingerprint database, the target data record may be compared to each record in source database. Because the individual comparisons are independent comparisons, the matching task may be parallelized by employing a cluster architecture of matching servers, or nodes.
The total time to complete the matching task is dependent upon at least the number of required comparisons and the number of cluster nodes, or workers, employed to perform the individual comparisons. Preferably, the cluster includes an adequate number of workers to timely execute the matching task and find a match between the target data and the source data. However, as the number of required comparisons per node and/or the total number of nodes increases, the likelihood that one or more individual nodes fail during the execution of the matching task also increases. Accordingly, in order for a system to complete a matching task with a significant number of required comparisons, a system that tolerates failures among the nodes is preferable. It is for these and other concerns that the following disclosure is presented herein.